modelsim中一个神奇又容易忽视的问题

您所在的位置:网站首页 modelsim hiz modelsim中一个神奇又容易忽视的问题

modelsim中一个神奇又容易忽视的问题

#modelsim中一个神奇又容易忽视的问题| 来源: 网络整理| 查看: 265

最近在用modelsim对设计进行仿真的过程中发现了一个非常有趣的问题。接下来,让我们跟随着一个设计的仿真来发现问题的原因所在。首先,以调用基于IP核的加法器为例。加法器IP核的参数设置如下:

设计代码如下:

/**********************************************版权申明************************************************* ** 版权归CrazyBird所有 ** http://blog.chinaaet.com/crazybird, http://www.cnblogs.com/CrazyBirdLin ** **--------------------------------------------文件信息-------------------------------------------------- ** 文件名: adder4_1.v ** 创建者: CrazyBird ** 创建日期: 2015-3-22 ** 版本号: v1.0 ** 功能描述: 两个4位无符号数相加 ** *******************************************************************************************************/ // synopsys translate_off `timescale 1ns / 1ps // synopsys translate_on module adder4_1 ( input clk, input rst_n, input [3:0] InA, input [3:0] InB, output [3:0] Sum, output Co ); //----------------------------------------------- //两个4位无符号数相加 adder_ip u_adder_ip ( .clk (clk ), // input clk .sclr (~rst_n ), // input sclr .a (InA ), // input [3 : 0] a .b (InB ), // input [3 : 0] b .s (Sum ), // output [3 : 0] s .c_out (Co ) // output c_out ); endmodule

 

测试代码如下:

 

/**********************************************版权申明************************************************* ** 版权归CrazyBird所有 ** http://blog.chinaaet.com/crazybird, http://www.cnblogs.com/CrazyBirdLin ** **--------------------------------------------文件信息-------------------------------------------------- ** 文件名: adder4_1_tb.v ** 创建者: CrazyBird ** 创建日期: 2015-3-22 ** 版本号: v1.0 ** 功能描述: 两个4位无符号数相加的测试文件 ** *******************************************************************************************************/ // synopsys translate_off `timescale 1ns / 1ps // synopsys translate_on module adder4_1_tb; //----------------------------------------------- //变量定义 reg clk; reg rst_n; reg [3:0] InA; reg [3:0] InB; wire [3:0] Sum; wire Co; //----------------------------------------------- //例化加法器模块adder4_1 adder4_1 u_adder4_1 ( .clk (clk ), .rst_n (rst_n ), .InA (InA ), .InB (InB ), .Sum (Sum ), .Co (Co ) ); //----------------------------------------------- //生成时钟 parameter PERIOD = 10; initial begin clk = 0; forever #(PERIOD/2) clk = ~clk; end //----------------------------------------------- //测试模块的激励 initial begin rst_n = 0; repeat(2)@(negedge clk); rst_n = 1; end always @(negedge clk or negedge rst_n) begin if(!rst_n) begin InA


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3